Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Read file before creating directory #644

Merged
merged 1 commit into from
Jul 29, 2018

Conversation

timneutkens
Copy link
Contributor

@timneutkens timneutkens commented Jul 22, 2018

After spending some time debugging where babel-loader compile time goes I found out that it tries to run mkdirp to create the cache directory for every possible file that's passed to babel-loader. This change makes sure that it only tries to create the directory if something has to be written to it.

This is still not ideal as it tries to create the directory for every file that's not there (this can take from 0 to 50ms per file from benchmarks I ran on a relatively large app (220 webpack entrypoints and around 1000 components)).

The most performant solution is keeping track of directories that were already created using a new Set(), but that seems to fail the tests as after every test the directory is removed and the internal cache remains.

@loganfsmyth loganfsmyth merged commit 6a70942 into babel:master Jul 29, 2018
@timneutkens timneutkens deleted the read-file-before-dir branch July 30, 2018 09:14
@edmorley
Copy link

Hi!

The most performant solution is keeping track of directories that were already created using a new Set(), but that seems to fail the tests as after every test the directory is removed and the internal cache remains.

How much of a performance improvement did that change make on top of this PR? (Wondering if it's worth pursuing further..)

@timneutkens
Copy link
Contributor Author

It definitely is worth pursuing, but I couldn't get the tests not to fail when implementing the Set solution. Feel free to investigate 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants